package day13.io;
import java.io.*;
//测试  字节读取流
//总结:
//1, 字节流读取 : FileInputStream /  BufferedInputStream
//2, 效率上来讲: BufferedInputStream > FileInputStream
//3, 原因是: BufferedInputStream 底层维护了一个byte[] buf ,
     //当数组满了之后才一次性从流里读进来 ,默认的数组容量是8192字节相当于8K
//4, 读取想要高效,一般使用BufferedInputStream . 也叫缓冲流/高级流
public class Test3_in {
    public static void main(String[] args) throws IOException {
//        method();//FileInputStream读取
        method2();//BufferedInputStream读取
    }
    //BufferedInputStream读取 -- 高效/缓冲流/高级流
    public static void method2() throws IOException {
        //1,创建多态对象
//        BufferedInputStream(InputStream in)
        InputStream in = new BufferedInputStream(
                                new FileInputStream("D:\\iotest\\1.txt")  );
        //2,开始读取
        int b = 0;//定义变量,记录读到的数据
        while( ( b = in.read() ) != -1){//没数据就会读到-1,循环
            System.out.println(b);//打印读到的数据
        }
        //3,释放资源
        in.close();
    }
    //FileInputStream读取
    public static void method() throws IOException {
        //1,创建多态对象
//        FileInputStream(String name)
//        FileInputStream(File file)
        InputStream in = new FileInputStream("D:\\iotest\\1.txt");
// InputStream in2 = new FileInputStream(new File("D:\\iotest\\1.txt") );
        //2,读取数据
//        TODO read()从读取流中一个一个字节的读取
//        int data = in.read();
//        System.out.println(data);
//        int data2 = in.read();
//        System.out.println(data2);
//        int data3 = in.read();
//        System.out.println(data3);
//        //TODO 没数据的话,会读到什么呢? -- 永远是-1
//        int data6 = in.read();
//        System.out.println(data6);
//        int data7 = in.read();
//        System.out.println(data7);

        //TODO 改造读取的过程
        int b = 0 ; //定义变量,记录读到的数据
        while ( ( b =  in.read() ) != -1 ){//如果没数据了就会读到-1,就会结束循环
            System.out.println(b);//打印读到的数据
        }
        //3,释放资源
        in.close();
    //TODO 当资源被释放后,不能再读了,否则抛出异常:Stream Closed
//        int data7 = in.read();
//        System.out.println(data7);
    }
}
